iT邦幫忙

2025 iThome 鐵人賽

DAY 20
0

在複習小考頁面加入模式選擇,錯題重練模式只會出現曾經答錯的題目。

▍程式碼

<!-- quiz.html -->

{% if mode == 'selection' %}

<!-- 模式選擇畫面 -->
<div>
    <h1>🩺 測驗模式選擇</h1>
    <p>請選擇您要開始的練習模式。</p>

    <div>
        <!-- 隨機出題 -->
        <a href="{{ url_for('quiz', mode='normal') }}">
            <div>
                隨機模擬測驗
                <div>從所有題庫中隨機選取題目,進行全面測試。</div>
            </div>
        </a>

        <!-- 錯題重練 -->
        <a href="{{ url_for('quiz', mode='practice') }}">
            <div>
                錯題重練模式
                <div>僅包含過去答錯的題目,加強弱點。</div>
            </div>
        </a>
    </div>
</div>

{% else %}
# views.py

@app.route('/quiz')
def quiz():
    # 預設模式為 'selection',顯示模式選擇畫面
    mode = request.args.get('mode', 'selection') 

    if mode == 'selection':
        return render_template('quiz.html', 
                               title='選擇測驗模式', 
                               quiz_data=None, 
                               mode='selection')

    all_questions = KNOWLEDGE_BASE
    quiz_data = []
    title = '隨機模擬測驗'

    # 錯題重練
    if mode == 'practice':
        title = '錯題重練模式'
        # 選擇 error_count 大於 0 的題目
        for question in all_questions:
            if question.get('error_count', False) > 0:
                quiz_data.append(question)
        
        if not quiz_data:
            # 如果沒有錯題,返回選擇頁面
            return render_template('quiz.html', 
                                   title='無錯題可練', 
                                   quiz_data=None, 
                                   mode='selection',
                                   error_message='目前沒有收藏或答錯的題目,請選擇隨機出題。')
    # 隨機題目
    else: # mode == 'normal' (預設為隨機出題)
        quiz_data = all_questions
    
    return render_template('quiz.html', 
                           title=title, 
                           quiz_data=quiz_data, 
                           mode=mode)

https://ithelp.ithome.com.tw/upload/images/20251004/20169370JULEub34e9.png


上一篇
DAY19 - 小考成績報表
下一篇
DAY21 - 小考題目導覽
系列文
打造你的數位圖書館:從雜亂檔案到個人化知識庫26
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言